iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0

再談IoC

在Day01的時候我們知道IoC有兩層意思,而Spring中的IoC指的是物件控制權的轉移。在了解控制權移轉前我們先看一個例子,以下是一個LoginService,在做登入驗證的時候會調用多個Service,new物件的工作會在我們手上。現在我們將這個工作(控制權)交給了容器(container),讓container管理物件的創建與調用。

LoginService{
    EmailService emailService;
    LogService logService;
    UserService userService;
    public loginValidate(String username,String password){
        //密碼錯誤時寄信給使用者
        emailService = new EmailService();
        //紀錄使用者操作
        logService = new LogService();
        //作為取得使用者資訊
        userService = new UserService();
    }
}

DI (Dependency Injection)依賴注入

由於物件受到container的管理,它知道哪個物件在使用時需要另一個物件,此時容器透過反射的方式將容器中的EmailService、LogService、UserService物件注入到LoginService中,以下是注入的例子。

LoginService{
    @Autowired
    EmailService emailService;
    @Autowired
    LogService logService;
    @Autowired
    UserService userService;
    public loginValidate(String username,String password){
        //注入的Service就可以直接調用囉
    }
}

Container如何取得物件呢

idea_download
參考網址
從官網的圖可以清楚知道,Container就是透過設定檔與POJO設定完成進到Container管理,設定方式有xml與註解的方式


上一篇
Day02 - 環境建置
下一篇
Day04 - Hello Spring
系列文
這些年,我們早該學會的Spring Framework30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言